package me.hfox.morphix.mapping.field; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; public class FieldMappers { private Map<FieldData, FieldMapper> mappers = new HashMap<>(); public synchronized void put(FieldData key, FieldMapper value) { List<FieldData> update = new ArrayList<>(); for (Entry<FieldData, FieldMapper> entry : mappers.entrySet()) { FieldData data = entry.getKey(); if (data.equals(key)) { update.add(data); } } mappers.put(key, value); for (FieldData data : update) { mappers.remove(data); } } public synchronized FieldMapper get(FieldData key) { for (Entry<FieldData, FieldMapper> entry : mappers.entrySet()) { FieldData data = entry.getKey(); if (data.equals(key)) { return entry.getValue(); } } return null; } }